package com.example.communitysystem.dto;

import com.example.communitysystem.exception.CustomizeErrorCode;
import com.example.communitysystem.exception.CustomizeException;
import lombok.Data;
import org.springframework.web.servlet.ModelAndView;

/*
    code:       结果返回状态码
    200         返回成功信息
    TARGET_PARAM_NOT_FOUND(201,"未选中任何问题或评论进行回复！"),
    QUESTION_NOT_FOUND(202,"您找的问题不在了，要不换一个试试！"),
    NO_LOGIN(203,"当前操作需要登录，请登录后重试！"),
    SYS_ERROR(204,"服务请求太热了，请稍后试试!!"),
    TYPE_PARAM_ERROR(205,"评论类型错误或不存在"),
    COMMENT_NOT_FOUND(206,"您回复的评论不在了，要不换一个试试！"),
    COMMENT_NOT_NULL(207,"您回复的评论为空，请输入评论！");
 */

@Data
public class ResultDTO<T> {
    private Integer code;       //结果返回状态码
    private String message;     //结果返回信息
    private T data;             //结果返回数据，类型为泛型

    //后端错误信息返回对象
    public static ResultDTO errorOf(Integer code, String message){
        ResultDTO resultDTO = new ResultDTO();
        resultDTO.setCode(code);
        resultDTO.setMessage(message);

        return resultDTO;
    }

    //返回指定的错误信息
    public static ResultDTO errorOf(CustomizeErrorCode noLogin) {
        return  errorOf(noLogin.getCode(), noLogin.getMessage());
    }

    //返回成功信息
    public static ResultDTO okOf() {
        return  errorOf(200, "请求成功！");
    }

    public static <T>ResultDTO okOf(T t) {
        ResultDTO resultDTO = new ResultDTO();
        resultDTO.setCode(200);
        resultDTO.setMessage("请求成功");
        resultDTO.setData(t);
        return  resultDTO;
    }

    public static ResultDTO errorOf(CustomizeException ex) {
        return errorOf(204,ex.getMessage());
    }
}
